iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
SideProject30

HOW TO GO系列 第 3

03. 基本資料型別

  • 分享至 

  • xImage
  •  

型別 (Types)

  1. 布林型別 (Boolean Type)
    • bool:表示布林值,只有 truefalse
  2. 整數型別 (Numeric Types)
    • uint:平台相關的無符號整數
    • uint8:8 位無符號整數
    • uint16:16 位無符號整數
    • uint32:32 位無符號整數
    • uint64:64 位無符號整數
    • int:平台相關的整數型別
    • int8:8 位有符號整數
    • int16:16 位有符號整數
    • int32:32 位有符號整數
    • int64:64 位有符號整數
    • float32:32位浮點數
    • float64:64位浮點數
    • complex64:由兩個 float32 組成的複數
    • complex128:由兩個 float64 組成的複數
    • byteuint8 別名
    • runeint32 別名
  3. 字串型別 (String Type)
    • string:表示一串 Unicode 字符序列

運算子 (Operators)

  1. 算術運算子 (Arithmetic operators)
    • +:加法
    • -:減法
    • *:乘法
    • /:除法
    • %:取餘數
    • &:位元 AND
    • |:位元 OR
    • ^:位元 XOR
    • <<:左位移
    • >>:右位移
  2. 比較運算子 Comparison operators
    • ==:等於
    • !=:不等於
    • <:小於
    • >:大於
    • <=:小於等於
    • >=:大於等於
  3. 邏輯運算子 (Logical operators)
    • &&:邏輯 AND
    • ||:邏輯 OR
    • !:邏輯 NOT
  4. 位址運算子 (Address operators)
    • &:取址,用於取得變數記憶體位址
    • *:指標,用於取得變數記憶體位址的值

範例

算數

package main

import (
	"fmt"
	"math"
)

const pi = 3.14 // 常數 // math.Pi

func main() {
	n1 := 10        // 自動推斷 "int"
	n2 := int64(10) // 使用強制轉型
	max := math.Max(float64(10), float64(20))
	r := float32(5)

	fmt.Println(n1)
	fmt.Println(n2)
	fmt.Println(max) // 20

	fmt.Println(pi * r * r) // 78.5
}

iota 常數產生

package main

import "fmt"

func main() {
	const (
		Sunday = iota // 0
		Monday        // 1(自動遞增)
		Tuesday       // 2(自動遞增)
		Wednesday     // 3(自動遞增)
		Thursday      // 4(自動遞增)
		Friday        // 5(自動遞增)
		Saturday      // 6(自動遞增)
	)

	fmt.Println("Days of the week:")
	fmt.Println("Sunday:", Sunday)
	fmt.Println("Monday:", Monday)
	fmt.Println("Tuesday:", Tuesday)
	fmt.Println("Wednesday:", Wednesday)
	fmt.Println("Thursday:", Thursday)
	fmt.Println("Friday:", Friday)
	fmt.Println("Saturday:", Saturday)
}

注意溢位 (Overflow),程式會正常執行不會引發錯誤

package main

import "fmt"

func main() {
	var nums byte = 255
	fmt.Println(nums)     // 255
	fmt.Println(nums + 1) // 0
}

字串

package main

import (
	"fmt"
	"strconv"
)

func main() {
	s := "string"
	length := len(s) // 取得長度

	fmt.Println(length) // 6
	fmt.Println(s[1:])  // "tring"

	var c byte = s[0]
	fmt.Println(c) // 115

	// 字串轉數字
	fmt.Println(strconv.Atoi("20")) // 20 <nil>

    // 多行字串
	s2 := `line 1
    line 2`
    
	fmt.Println(s2)
}


上一篇
02. 程式結構
下一篇
04. 組合型別
系列文
HOW TO GO30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言